package com.frejoys.service;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.dto.black.BlackAddDto;
import com.frejoys.common.dto.black.BlackPageDto;
import com.frejoys.common.dto.common.IdDto;
import com.frejoys.common.vo.black.BlackInfoVo;
import com.frejoys.common.vo.black.BlackPageVo;
import com.frejoys.dao.entity.Black;

import java.util.List;

public interface BlackService extends IService<Black> {

    default Black getOnly(QueryWrapper<Black> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default Black getOnly(LambdaQueryWrapper<Black> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    /**
     * 添加
     * @param dto
     * @return
     */
    boolean addInfo(BlackAddDto dto);

    /**
     * 是否存在
     * @param mark
     * @param type
     * @return
     */
    boolean isExist(String mark, Integer type);

    /**
     * 电话是否存在
     * @param phone
     * @return
     */
    boolean isPhoneExist(String phone);

    /**
     * ip是否存在
     * @param ip
     * @return
     */
    boolean isIpExist(String ip);

    /**
     * 验证账户
     * @param accountExtend
     * @param account
     * @param type
     */
    void verifyAccount(String accountExtend, String account, Integer type);

    /**
     * 效验ip
     * @param ipAddr
     */
    void verifyIp(String ipAddr);

    /**
     * 后台分页查询黑名单
     */
    List<BlackPageVo> pageList(BlackPageDto dto);

    /**
     * 获取黑名单详情
     */
    BlackInfoVo getInfo(IdDto dto);

}
